10 DIMA(20,6),B(20,6),C(20,6),N$(20),A$(20),B$(20),M(6),T(6),U(6) 20 NP=0:AD=0:NA=0 30 POKE53280,11:POKE53281,11:PRINTCHR$(5) 100 REM ***************** MENU **************** 110 PRINTCHR$(147):PRINT:PRINTTAB(12)"SOFTBALL STATS" 120 PRINT 130 PRINT:PRINT" 1 LOAD PREVIOUS STATS" 140 PRINT:PRINT" 2 ADD NEW DATA" 150 PRINT:PRINT" 3 SORT AND DISPLAY STATS" 160 PRINT:PRINT" 4 SAVE NEW DATA" 170 PRINT:PRINT" 5 ADD PLAYERS" 180 PRINT:PRINT" 6 PRINT STATS" 190 PRINT:PRINT" 7 QUIT PROGRAM" 200 PRINT:PRINT 210 C=0:INPUT" ENTER YOUR CHOICE";C 220 IFC<1ORC>7THEN210 230 ONCGOSUB1000,2000,3000,4000,5000,8200,11000 240 GOTO100 1000 REM ********* READ OLD DATA FROM TAPE OR DISK ********* 1005 PRINTCHR$(147):GOSUB9800:IFTD$="T"THEN1011 1010 OPEN2,8,2,"0:SOFTBALL "+GN$+",S,R":GOTO1015 1011 OPEN2,1,0,"SOFTBALL" 1015 INPUT#2,GM 1020 PRINTCHR$(147):PRINT"SOFTBALL STATS THROUGH GAME #";GM:PRINT 1030 GOSUB10000 1035 NA=NP 1040 NP=NP+1:INPUT#2,N$(NP) 1050 IFN$(NP)="END"THENNP=NP-1:GOTO1070 1060 GOTO1040 1070 FORI=NA+1TONP 1080 FORJ=1TO5 1090 INPUT#2,A(I,J) 1100 NEXTJ 1110 INPUT#2,A$(I) 1130 PRINTN$(I); 1140 X=8 1150 FORK=1TO5 1160 PRINTTAB(X)A(I,K); 1170 X=X+5 1180 NEXTK 1182 IFA$(I)="1.000"THENX=X-1 1185 PRINTTAB(X+1)A$(I) 1190 NEXTI:CLOSE2 1192 FORI=1TONP:FORJ=1TO5 1194 C(I,J)=A(I,J) 1196 NEXT:NEXT 1200 GOSUB6000:GOSUB6100 1205 IFTD$="D"THEN1230 1210 PRINT:PRINT:PRINTTAB(9)"*** TURN OFF TAPE ***" 1220 IFPEEK(192)<>0THEN1220 1230 GOSUB9500 1240 RETURN 2000 REM *********** INPUT THIS WEEKS DATA *********** 2005 PRINTCHR$(147):PRINT" INPUT NEW DATA":PRINT:PRINT 2007 AD=1 2010 FORI=1TONP 2020 PRINTN$(I) 2030 GOSUB8500 2060 GOSUB2500 2070 PRINT 2080 NEXTI 2090 GOSUB10000:GOSUB8000 2100 REM CHECK FOR ERRORS 2105 PRINT:PRINTTAB(12)"CHECK FOR ERRORS" 2110 PRINT:PRINT" HIT 'E' TO CORRECT INPUT ERRORS" 2120 GETK$:IFK$=""THEN2120 2130 IFK$="E"THENGOSUB7000 2140 PRINTCHR$(147):PRINT:PRINT" COMPUTING..." 2165 REM *** ADD NEW DATA TO OLD 2170 FORI=1TONP 2180 FORJ=1TO5 2190 B(I,J)=B(I,J)+A(I,J) 2200 NEXTJ 2210 GOSUB2500 2230 NEXTI 2240 GOSUB8800:GOSUB6000 2250 RETURN 2500 REM *************** COMPUTE AVG *************** 2510 IFB(I,1)=0THENB(I,6)=0:GOTO2550 2520 B(I,6)=B(I,2)/B(I,1) 2530 B(I,6)=INT(B(I,6)*1000+.5)/1000 2540 IFB(I,6)=1THENB$(I)="1.000":GOTO2600 2550 IFB(I,6)=0THENB$(I)=" .000":GOTO2600 2560 B$(I)=STR$(B(I,6)):L=LEN(B$(I)) 2570 IFL=3THENB$(I)=B$(I)+"00":GOTO2600 2580 IFL=4THENB$(I)=B$(I)+"0" 2600 RETURN 3000 REM ************* SHELL SORT ******************** 3005 IFAD=0THENAD=1:GOSUB2170 3007 GOSUB9000 3008 PRINTCHR$(147);:PRINT" COMPUTING...." 3010 N=NP 3020 G=INT(N/2) 3030 IFG=0THEN3160 3040 FORI=1TON-G 3050 IFB(I,S)>=B(I+G,S)THEN3100 3060 FORJ=1TO6:T(J)=B(I,J):U(J)=A(I,J):NEXT 3062 T$=N$(I):TB$=B$(I) 3070 FORJ=1TO6:B(I,J)=B(I+G,J):A(I,J)=A(I+G,J):NEXT 3072 N$(I)=N$(I+G):B$(I)=B$(I+G) 3080 FORJ=1TO6:B(I+G,J)=T(J):A(I+G,J)=U(J):NEXT 3082 N$(I+G)=T$:B$(I+G)=TB$ 3090 E=1 3100 NEXT 3110 IFE=0THEN3140 3120 E=0 3130 GOTO3030 3140 G=INT(G/2) 3150 GOTO3030 3160 PRINTCHR$(147):PRINT:GOSUB10000 3165 PRINT:GOSUB8000:GOSUB8800 3170 GOSUB6000:GOSUB6100 3180 PRINT:GOSUB9500:RETURN 4000 REM ******** SAVE NEW STATS TO TAPEOR DISK ********* 4002 PRINTCHR$(147):PRINT:PRINT 4005 GOSUB9800:IFTD$="T"THEN4011 4010 OPEN2,8,2,"0:SOFTBALL "+GN$+",S,W":GOTO4015 4011 OPEN2,1,1,"SOFTBALL" 4015 PRINT#2,GA 4020 FORI=1TONP 4030 PRINT#2,N$(I) 4040 NEXT 4045 PRINT#2,N$(NP+1) 4050 FORI=1TONP 4060 FORJ=1TO5 4070 PRINT#2,B(I,J) 4080 NEXTJ 4085 PRINT#2,B$(I) 4090 NEXTI 4100 CLOSE2 4102 PRINT:PRINT:PRINTTAB(12)"NEW STATS SAVED" 4104 IFTD$="D"THEN4110 4105 PRINT:PRINTTAB(13)"TURN OFF TAPE" 4106 IFPEEK(192)<>0THEN4106 4110 PRINT:GOSUB9500:RETURN 5000 REM *********ADD PLAYERS (OR START YEAR) ********** 5010 PRINTCHR$(147):PRINT:PRINT" ENTER 'END' AFTER LAST PLAYER":PRINT 5020 NP=NP+1 5030 INPUT"NAME";N$(NP) 5035 IFLEN(N$(NP))>8THENN$(NP)=LEFT$(N$(NP),8) 5040 IFN$(NP)="END"THENNP=NP-1:GOTO5100 5050 FORJ=1TO6 5060 A(NP,J)=0 5070 NEXT 5080 B$(NP)=" .000" 5090 PRINT:GOTO5020 5100 RETURN 6000 REM ************ TEAM TOTALS (M) ************** 6010 FORI=1TO5:M(I)=0:NEXT:PRINT 6020 FORJ=1TO5 6030 FORI=1TONP 6040 M(J)=M(J)+C(I,J) 6050 NEXT 6060 NEXT 6070 IFM(1)=0THENM(6)=0:GOTO6093 6080 M(6)=M(2)/M(1) 6090 M(6)=INT(M(6)*1000+.5)/1000 6092 IFM(6)=1THENM$="1.000":GOTO6099 6093 IFM(6)=0THENM$=" .000":GOTO6099 6095 M$=STR$(M(6)):L=LEN(M$) 6097 IFL=3THENM$=M$+"00":GOTO6099 6098 IFL=4THENM$=M$+"0" 6099 RETURN 6100 X=8 6110 PRINT"TOTALS"; 6120 FORJ=1TO5 6130 PRINTTAB(X)M(J); 6140 X=X+5 6150 NEXT 6155 PRINTTAB(X)M$ 6160 RETURN 7000 REM ************ ERROR CORRECTION ************ 7010 PRINTCHR$(147):PRINT:PRINTTAB(12)"ERROR CORRECTION":PRINT:PRINT 7020 PF=0:INPUT"NAME OF PLAYER";C$:PRINT 7030 FORI=1TONP 7040 IFC$<>N$(I)THEN7060 7050 PF=1:GOSUB8500 7060 NEXTI 7065 IFPF=0THENPRINT"PLAYER NOT FOUND, TRY AGAIN":PRINT:GOTO7020 7070 PRINT:INPUT"MORE CORRECTIONS (Y/N)";MC$ 7080 IFMC$="N"THENRETURN 7090 IFMC$="Y"THEN7010 7100 GOTO7070 8000 REM ********** PRINT STATS (SCREEN) *********** 8010 FORI=1TONP 8020 PRINTN$(I); 8030 X=8 8040 FORJ=1TO5 8050 PRINTTAB(X)B(I,J); 8060 X=X+5 8070 NEXT 8072 PRINTTAB(X)B$(I) 8080 NEXT 8090 RETURN 8200 REM ************ STATS TO PRINTER ************ 8210 IFAD=0THENAD=1:GOSUB2170 8215 PRINTCHR$(147):INPUT"STATS THROUGH GAME #";GN 8220 PRINT:PRINT" TURN PRINTER ON, SET PITCH, MARGINS" 8225 PRINT:PRINT"AND LINE SPACING.":PRINT:PRINT 8230 GOSUB9500 8240 OPEN4,4:CMD4 8245 PRINT"SOFTBALL STATS THROUGH GAME #";GN 8250 PRINT 8260 PRINT"NAME"SPC(8)"AB"SPC(6)"H"SPC(7)"R"SPC(7)"RBI"SPC(5)"BB"SPC(7)"AVG" 8270 PRINT 8280 FORI=1TONP 8285 ZZ=11-LEN(N$(I)) 8290 PRINTN$(I);SPC(ZZ); 8300 FORJ=1TO5 8305 ZZ=7-(LEN(STR$(B(I,J)))) 8310 PRINTB(I,J);SPC(ZZ); 8320 NEXTJ 8330 PRINTB$(I) 8340 NEXTI 8350 PRINT:PRINT"TOTALS "; 8360 FORJ=1TO5 8365 ZZ=7-(LEN(STR$(M(J)))) 8370 PRINTM(J);SPC(ZZ); 8380 NEXT 8390 PRINTM$ 8400 PRINT#4:CLOSE4 8410 RETURN 8500 REM ************** INPUT STATS ************** 8510 INPUT"ABS";B(I,1) 8520 INPUT"HITS";B(I,2) 8530 INPUT"RUNS";B(I,3) 8540 INPUT"RBIS";B(I,4) 8550 INPUT"WALKS";B(I,5) 8570 RETURN 8800 REM ****** SET C(X,X) BEFORE TOTALS****** 8810 FORI=1TONP:FORJ=1TO5 8820 C(I,J)=B(I,J) 8830 NEXT:NEXT 8840 RETURN 9000 REM *************** SORT MENU *************** 9010 PRINTCHR$(147):PRINT:PRINT "WHICH CATEGORY DO YOU WANT TO SORT BY?" 9020 PRINT 9030 PRINT:PRINT" 1 AT BATS" 9040 PRINT:PRINT" 2 HITS" 9050 PRINT:PRINT" 3 RUNS" 9060 PRINT:PRINT" 4 RBIS" 9070 PRINT:PRINT" 5 WALKS" 9080 PRINT:PRINT" 6 AVERAGE" 9090 PRINT:PRINT:PRINT 9100 INPUT" ENTER YOUR CHOICE";S 9110 IFS<1ORS>6THEN9100 9120 RETURN 9500 REM *************** GET KEY ************* 9510 PRINT:PRINTTAB(15)"HIT A KEY" 9520 GETK$:IFK$=""THEN9520 9530 RETURN 9800 REM *** GET TAPE OR DISK INPUT *** 9810 INPUT"TAPE OR DISK (T/D)";TD$ 9820 IFTD$<>"D"ANDTD$<>"T"THEN9810 9840 PRINT:INPUT"STATS THROUGH GAME NUMBER";GN$:GA=VAL(GN$) 9850 RETURN 10000 REM ************** PRINT HEADINGS ************ 10010 PRINT"NAME";TAB(9)"AB";TAB(14)"H";TAB(19)"R";TAB(23)"RBI";TAB(29)"BB"; 10020 PRINTTAB(35)"AVG" 10030 RETURN 11000 PRINTCHR$(147):END:REM ****** QUIT ******